package cn.com.surker.base.system.dao;

import cn.com.surker.base.system.entity.SysStorage;
import cn.com.surker.base.system.vo.SysStorageVo;
import cn.com.surker.dto.system.SysStorageDTO;
import cn.com.surker.vo.system.SysStorageVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 仓位信息表 Mapper 接口
 * </p>
 *
 * @author admin
 * @since 2024-09-02
 */
public interface SysStorageDao extends BaseMapper<SysStorage> {


    IPage<SysStorageVO> page(Page<SysStorageVO> page, @Param("dto") SysStorageDTO dto);

	/**
	 * 查询erp仓位明细信息
	 * @param page
	 * @param dbCode
	 * @param storage
	 * @return
	 */
    IPage<SysStorageVo> cloudPage(Page<SysStorageVO> page, String dbCode, @Param("storage") SysStorageVo storage);

	/**
	 * 查询仓位明细
	 * @param dbCode
	 * @param storage
	 * @return
	 */
    List<SysStorageVo> cloudPage(String dbCode, @Param("storage") SysStorageVo storage);

	/**
	 * 根据材料查询仓位
	 *
	 * @param materialId
	 * @return
	 */
	List<SysStorage> findByMaterial(Long materialId);

	/**
	 * 查询实时库存
	 * @param time 查询时间
	 * @param isEnjoy 是否是共享仓 0是 1不是
	 * @return
	 */
	List<SysStorageVo> findStoreLastTime(String dbCode, String time, Integer isEnjoy);

	List<SysStorageVo> findStoreLastTimeV1(String dbCode, String time, Integer isEnjoy);

	/**
	 * 根据公司、类型查询云端仓位信息
	 * @param dbCode
	 * @param orgId
	 * @param materialId
	 * @param type
	 * @return
	 */
	List<SysStorage> findCloudByOrg(@Param("dbCode") String dbCode, Long orgId, Long lineId, Long materialId, Integer type);

	/**
	 *
	 * @param dbCode
	 * @param name
	 * @return
	 */
	List<SysStorage> findByDbCode(String dbCode, String name);

	/**
	 * 更新仓位描述
	 * @param dbCode
	 * @param storage
	 * @return
	 */
	Integer updateDescCloud(String dbCode, SysStorage storage);

	/**
	 * 查询云端数据是否存在
	 * @param dbCode
	 * @param id
	 * @return
	 */
	SysStorageVo selectCloudById(String dbCode, Long id);

	/**
	 * 根据仓位编号、生产线查询仓位
	 * @param dbCode
	 * @param lineId
	 * @param code
	 * @return
	 */
	List<SysStorageVo> selectCloudByCode(String dbCode, Long lineId, String code);

	/**
	 * 加载盘存明细仓位信息
	 * @param dbCode
	 * @param orgId
	 * @param today
	 * @return
	 */
	List<SysStorageVo> findCloudOrgOrInventory(String dbCode, Long orgId, String today);

	/**
	 * 根据生产线、材料品类查询仓位信息
	 * @param lineId
	 * @param breedType
	 * @return
	 */
	List<SysStorageVo> findByMaterialV1(Long lineId, Integer breedType);
}
